Computer operating systems perform a number of functions, including serving as a bridge between computer hardware and computer applications that run on the operating systems. Modern computer operating systems also provide basic graphical user interfaces (GUIs) by which users can interact with components of the operating system in more intuitive manners.
Graphics rendering can include a variety of display commands that increase the effectiveness of processing graphical objects by allowing for processing and manipulating objects in a variety of ways within the context of a graphical display. Any particular graphical generation technique may include a number of these commands in order to process the various graphical objects in the display. Draw commands (for adding graphical objects to a display), and state commands (for manipulating existing graphical objects), may be processed in sequence in order to create the display.
Often, large portions of a display remain static between frames that are shown with the display. It may be procedurally costly and inefficient to execute the entire set of commands associated with a display when the same commands are repeated over and over again. For this reason, certain graphics systems include the ability to record a display list. The display list can extract the drawing and state commands from the logic of an application in order to create a much quicker method of repeatedly rendering the same object using a set of drawing commands.
However, a naively constructed display list may include many redundant and nonproductive drawing commands. This is a product of the fact that drawing commands within an application that are important in one situation may be unnecessary in a different situation for which the display list is recorded. It is inefficient to repeatedly execute display lists that include a large fraction of unnecessary commands.